//
//  ACCipherTools.h
//  ACFramework
//
//  Created by caoyq on 2018/8/1.
//

#import <Foundation/Foundation.h>

///加解密工具
@interface ACCipherTools : NSObject

+ (instancetype)instance;

#pragma mark - AES

/**
 AES加密.

 @param value 可以是NSString或NSData.
 @param aKey  密钥.
 @param iv    初始化向量（不传入表示使用的是AES-ECB，有传入值表示使用的是AES-CBC）.
 @return 传入NSString返回加密后的字符串(会进行一次base64编码)；传入NSData，返回加密后的字节流.
 */
- (id)aes_encryptValue: (id)value key: (NSString *)aKey iv: (NSData *)iv;

/**
 AES解密.

 @param value 可以是NSString或NSData.
 @param aKey  密钥.
 @param iv    初始化向量（不传入表示使用的是AES-ECB，有传入值表示使用的是AES-CBC）.
 @return 传入NSString返回加密后的字符串(会进行一次base64编码)；传入NSData，返回加密后的字节流.
 */
- (id)aes_decryptValue: (id)value key: (NSString *)aKey iv: (NSData *)iv;

#pragma mark - DES

/**
 DES加密.

 @param value 可以是NSString或NSData.
 @param aKey  密钥.
 @param iv    初始化向量（不传入表示使用的是DES-ECB，有传入值表示使用的是DES-CBC）.
 @return 传入NSString返回加密后的字符串(会进行一次base64编码)；传入NSData，返回加密后的字节流.
 */
- (id)des_encryptValue: (id)value key: (NSString *)aKey iv: (NSData *)iv;

/**
 DES解密

 @param value 可以是NSString或NSData.
 @param aKey 密钥.
 @param iv 初始化向量（不传入表示使用的是DES-ECB，有传入值表示使用的是DES-CBC）.
 @return 传入NSString返回加密后的字符串(会进行一次base64编码)；传入NSData，返回加密后的字节流.
 */
- (id)des_decryptValue: (id)value key: (NSString *)aKey iv: (NSData *)iv;

@end
